<?php
// $Id: groups_controller.php @2009 ccbox.net 1:22 2009-5-14 $

/**
 * Controller_Admin_Groups 控制器
 */
// group_id, parent_id, group_name, left_value, right_value, description, has_users
class Controller_Admin_Groups extends Controller_Abstract
{
    /* ******************************************************************** */
    function actionIndex()
    {
        $show_box['title'] = '用户组管理首页';
        // 分页查询
        $page = intval($this->_context->page);
        if ($page < 1) $page = 1;
        // 构造查询对象
        $select = Admin_Groups::find();
        $select -> limitPage($page, 15);

        // 将分页信息和查询到的数据传递到视图
        $show_box['pagination']  = $select->getPagination();
        $show_box['groups']       = $select->getAll();

        $this->_view['show_box'] = $show_box;
    }

    /* ******************************************************************** */
    function actionAdd()
    {
        $show_box['title'] = '添加用户组';
        // 构造表单对象
        $show_box['form'] = new Form_GroupForm(url('admin::groups/add'));
        $show_box['form']->_subject = $show_box['title'];
        if ($this->_context->isPOST() && $show_box['form']->validate($_POST))
        {
            try
            {
                $db_one = new Admin_Groups($show_box['form']->values());
                $db_one->save();
                return $this->_redirectMessage(
                    '添加分组成功', 
                    '新的分组已经添加成功。',
                    url('admin::groups/index'));
            }
            catch (QValidator_ValidateFailedException $ex)
            {
                $show_box['form']->invalidate($ex);
            }
/*            catch (QDB_ActiveRecord_ValidateFailedException $ex)
            {
                $show_box['form']['rolename']->invalidate("角色名已经存在");
            }*/
        }
        // 将表单对象传递给视图
        $this->_view['show_box'] = $show_box;
        $this->_viewname = 'form';
    
    }

    /* ******************************************************************** */
    function actionView()
    {
        $show_box['title'] = '查看用户组';
        // 查询指定用户 ID
        $show_box['main_info'] = Admin_Groups::find('group_id = ?', $this->_context->group_id )->query();
        if ( !$show_box['main_info'] -> id() )
        { // 如果 ID 无效，则返回用户管理首页
            return $this->_redirect(url('admin::groups/index'));
        }
        $this->_view['show_box'] = $show_box;
    }

    /* ******************************************************************** */
    function actionEdit()
    {
        $show_box['title'] = '编辑用户组';
        // 查询指定 ID
        $db_one = Admin_Groups::find('group_id = ?', $this->_context->group_id )->query();
        if ( !$db_one->id() )
        { // 如果 ID 无效，则返回
            //return $this->_redirect(url('admin::groups/index'));
                return $this->_redirectMessage(
                    '分组ID无效', 
                    '分组ID无效，请检查你的表单。',
                    url('admin::groups/index'));
        }
        // 构造表单对象
        $show_box['form'] = $form = new Form_GroupForm(url('admin::groups/edit'));
        $show_box['form']->_subject = $show_box['title'];
        if ($this->_context->isPOST() && $show_box['form'] -> validate($_POST))
        {
            try{
                // changeProps() 方法可以批量修改  对象的属性，但不会修改只读属性的值
                $db_one->changeProps($show_box['form']->values());
                $db_one->save();
                return $this->_redirect(url('admin::groups/index'));
            }
            catch (QValidator_ValidateFailedException $ex)
            {
                $show_box['form']->invalidate($ex);
            }
        }elseif (!$this->_context->isPOST()){
            // 如果不是 POST 提交，则把对象值导入表单
            $show_box['form']->import($db_one);
        }
        $this->_view['show_box'] = $show_box;
        $this->_viewname = 'form';
    }

    /* ******************************************************************** */
    function actionDel()
    {
        $show_box['title'] = '删除用户组';
        //注意设定用户删除的锁定
    }











    
}


